home *** CD-ROM | disk | FTP | other *** search
- Path: keats.ugrad.cs.ubc.ca!not-for-mail
- From: c2a192@ugrad.cs.ubc.ca (Kazimir Kylheku)
- Newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++,comp.edu
- Subject: Re: ANSI C and POSIX (was Re: C/C++ knocks the crap out of Ada)
- Date: 8 Apr 1996 13:54:35 -0700
- Organization: Computer Science, University of B.C., Vancouver, B.C., Canada
- Message-ID: <4kbuebINNrho@keats.ugrad.cs.ubc.ca>
- References: <JSA.96Feb16135027@organon.com> <dewar.828936837@schonberg> <828964950snz@genesis.demon.co.uk> <dewar.828987544@schonberg>
- NNTP-Posting-Host: keats.ugrad.cs.ubc.ca
-
- In article <dewar.828987544@schonberg>, Robert Dewar <dewar@cs.nyu.edu> wrote:
- >With respect to read (Linux unusual behavior), Lawrence said
- >
- >"Both approaches meet the relevant standards and are correct. Only broken
- >code has portability problems, but that's nothing new."
- >
- >Can you quote the relevant standard. No description of read I ever saw
- >was detailed or precise enough to say what the requirements on the caller
- >are.
- >
- >Lots of code is portable and broken, lots of code is (deliberately)
- >non-portable and definitely not broken. Lots of code is carefully
- >written to be portable, but runs into bugs in supposedly conforming
- >implementations. Lots of code uses features that are useful, but for
- >which no standard exists, and hence may run into portability problems.
-
- In this case, it is safe to assume that the caller of read() had better not lie
- to the system call. The buffer size is the de-facto ``advertized'' buffer size,
- and all of the buffer up to the given size should be backed by valid storage.
-
- It would not even occur to me to advertize a buffer of size N, but pass a
- pointer to a buffer of size M < N to the POSIX read() function, or in any way
- rely on the nature of the checking done by the kernel.
-
- This is so deeply entrenched in the realm of common sense that it isn't even
- worth mentioning in a standard document! Nevertheless, I have access to the
- POSIX.1 standard and will look into this.
- --
-
-